package cn.smile.bean;

import lombok.Data;

/**
 * ajax提交统一返回结果类
 *
 * @author Administrator
 */
@Data
public class Result<T> {

    private int code;//错误码

    private String msg;//返回的具体信息

    private T data;//定义返回的数据

    @SuppressWarnings("unused")
    private Result() {
    }

    /**
     * 定义传codeMsg的私有化构造函数，不允许外部创建对象
     */
    private Result(CodeMsg codeMsg) {
        if (codeMsg != null) {
            this.code = codeMsg.getCode();
            this.msg = codeMsg.getMsg();
        }
    }

    /**
     * 定义传指定数据对象和codeMsg的私有化构造函数，不允许任意创建对象
     */
    private Result(T data, CodeMsg codeMsg) {
        if (codeMsg != null) {
            this.code = codeMsg.getCode();
            this.msg = codeMsg.getMsg();
        }
        this.data = data;
    }

    /**
     * 定义统一的成功返回函数
     */
    public static <T> Result<T> success(T data) {
        return new Result<>(data, CodeMsg.SUCCESS);
    }

    /**
     * 统一错误返回方法，所有错误都调用此方法
     */
    public static <T> Result<T> error(CodeMsg codeMsg) {
        return new Result<>(codeMsg);
    }
}
